package com.fishery.base.mapper;

import com.fishery.base.entity.BaseSupply;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fishery.base.entity.vo.BaseSupplyAmountVo;
import com.fishery.base.entity.vo.BaseSupplyNameVo;
import org.apache.ibatis.annotations.Param;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>
 * 基地投入品 Mapper 接口
 * </p>
 *
 * @author Ghost
 * @since 2021-01-21
 */
public interface BaseSupplyMapper extends BaseMapper<BaseSupply> {

	/**
	 * 获取基地所有投入品信息
	 *
	 * @param baseId
	 * @return
	 */
	List<Integer> findAllSupplyType(String baseId);

	/**
	 * 分页获取基地某种类型投入品的名字
	 *
	 * @param baseId
	 * @param type
	 * @param size
	 * @param offset
	 * @return
	 */
	List<BaseSupplyNameVo> findAllSupplyName(@Param("baseId") String baseId,
											 @Param("type") int type,
											 @Param("size") int size,
											 @Param("offset") int offset);


	/**
	 * 查询基地某种类型投入品的总条记录数
	 *
	 * @param baseId
	 * @param type
	 * @return
	 */
	int findCount(@Param("baseId") String baseId, @Param("type") int type);

	/**
	 * 增加基地某种投入品的库存量
	 *
	 * @param baseId
	 * @param supplyId
	 * @param delt
	 * @return
	 */
	int increaseBaseSupplyWeight(@Param("baseId") String baseId,
								 @Param("supplyId") String supplyId,
								 @Param("delt") BigDecimal delt);

	/**
	 * 减少基地某种投入品的库存量
	 *
	 * @param baseId
	 * @param supplyId
	 * @param weight
	 * @return
	 */
	int decreaseBaseSupply(@Param("baseId") String baseId,
						   @Param("supplyId") String supplyId,
						   @Param("weight") BigDecimal weight);

	/**
	 * 通过基地ID查询投入品的数量相关信息
	 *
	 * @param baseId
	 * @return
	 */
	List<BaseSupplyAmountVo> findAmountInfoOfBaseSupply(String baseId);

	/**
	 * 通过基地ID分页查询基地的投入品
	 *
	 * @param baseId
	 * @param offset
	 * @param size
	 * @return
	 */
	List<BaseSupply> findBaseSupplyWithPage(@Param("baseId") String baseId,
											@Param("offset") int offset,
											@Param("size") int size);

	/**
	 * 通过基地ID查询基地投入品的总记录数
	 *
	 * @param baseId
	 * @return
	 */
	int selectTotal(String baseId);

	/**
	 * 通过基地ID查询基地的投入品
	 *
	 * @param baseId
	 * @return
	 */
	List<BaseSupply> findAllBaseSupplies(String baseId);
}

